package org.xtext.tp4.ui.contentassist.antlr.internal; 

import java.io.InputStream;
import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;
import org.xtext.tp4.services.MinigobstonesGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalMinigobstonesParser extends AbstractInternalContentAssistParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_INT", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'procedure'", "'('", "')'", "'{'", "'}'", "'Poner'", "'Mover'", "'Oeste'", "'Este'", "'Norte'", "'Sur'", "'Negro'", "'Rojo'", "'Azul'", "'Verde'"
    };
    public static final int RULE_ID=4;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=10;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int RULE_SL_COMMENT=8;
    public static final int EOF=-1;
    public static final int RULE_ML_COMMENT=7;
    public static final int T__19=19;
    public static final int RULE_STRING=6;
    public static final int T__16=16;
    public static final int T__15=15;
    public static final int T__18=18;
    public static final int T__17=17;
    public static final int T__12=12;
    public static final int T__11=11;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int RULE_INT=5;
    public static final int RULE_WS=9;

    // delegates
    // delegators


        public InternalMinigobstonesParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalMinigobstonesParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalMinigobstonesParser.tokenNames; }
    public String getGrammarFileName() { return "../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g"; }


     
     	private MinigobstonesGrammarAccess grammarAccess;
     	
        public void setGrammarAccess(MinigobstonesGrammarAccess grammarAccess) {
        	this.grammarAccess = grammarAccess;
        }
        
        @Override
        protected Grammar getGrammar() {
        	return grammarAccess.getGrammar();
        }
        
        @Override
        protected String getValueForTokenName(String tokenName) {
        	return tokenName;
        }




    // $ANTLR start "entryRuleInitStructure"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:60:1: entryRuleInitStructure : ruleInitStructure EOF ;
    public final void entryRuleInitStructure() throws RecognitionException {
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:61:1: ( ruleInitStructure EOF )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:62:1: ruleInitStructure EOF
            {
             before(grammarAccess.getInitStructureRule()); 
            pushFollow(FOLLOW_ruleInitStructure_in_entryRuleInitStructure61);
            ruleInitStructure();

            state._fsp--;

             after(grammarAccess.getInitStructureRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleInitStructure68); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleInitStructure"


    // $ANTLR start "ruleInitStructure"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:69:1: ruleInitStructure : ( ( rule__InitStructure__DefinitionsAssignment )* ) ;
    public final void ruleInitStructure() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:73:2: ( ( ( rule__InitStructure__DefinitionsAssignment )* ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:74:1: ( ( rule__InitStructure__DefinitionsAssignment )* )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:74:1: ( ( rule__InitStructure__DefinitionsAssignment )* )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:75:1: ( rule__InitStructure__DefinitionsAssignment )*
            {
             before(grammarAccess.getInitStructureAccess().getDefinitionsAssignment()); 
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:76:1: ( rule__InitStructure__DefinitionsAssignment )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==11) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:76:2: rule__InitStructure__DefinitionsAssignment
            	    {
            	    pushFollow(FOLLOW_rule__InitStructure__DefinitionsAssignment_in_ruleInitStructure94);
            	    rule__InitStructure__DefinitionsAssignment();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);

             after(grammarAccess.getInitStructureAccess().getDefinitionsAssignment()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleInitStructure"


    // $ANTLR start "entryRuleDefinition"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:88:1: entryRuleDefinition : ruleDefinition EOF ;
    public final void entryRuleDefinition() throws RecognitionException {
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:89:1: ( ruleDefinition EOF )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:90:1: ruleDefinition EOF
            {
             before(grammarAccess.getDefinitionRule()); 
            pushFollow(FOLLOW_ruleDefinition_in_entryRuleDefinition122);
            ruleDefinition();

            state._fsp--;

             after(grammarAccess.getDefinitionRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDefinition129); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleDefinition"


    // $ANTLR start "ruleDefinition"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:97:1: ruleDefinition : ( ruleProcedureDef ) ;
    public final void ruleDefinition() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:101:2: ( ( ruleProcedureDef ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:102:1: ( ruleProcedureDef )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:102:1: ( ruleProcedureDef )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:103:1: ruleProcedureDef
            {
             before(grammarAccess.getDefinitionAccess().getProcedureDefParserRuleCall()); 
            pushFollow(FOLLOW_ruleProcedureDef_in_ruleDefinition155);
            ruleProcedureDef();

            state._fsp--;

             after(grammarAccess.getDefinitionAccess().getProcedureDefParserRuleCall()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleDefinition"


    // $ANTLR start "entryRuleProcedureDef"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:116:1: entryRuleProcedureDef : ruleProcedureDef EOF ;
    public final void entryRuleProcedureDef() throws RecognitionException {
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:117:1: ( ruleProcedureDef EOF )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:118:1: ruleProcedureDef EOF
            {
             before(grammarAccess.getProcedureDefRule()); 
            pushFollow(FOLLOW_ruleProcedureDef_in_entryRuleProcedureDef181);
            ruleProcedureDef();

            state._fsp--;

             after(grammarAccess.getProcedureDefRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleProcedureDef188); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleProcedureDef"


    // $ANTLR start "ruleProcedureDef"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:125:1: ruleProcedureDef : ( ( rule__ProcedureDef__Group__0 ) ) ;
    public final void ruleProcedureDef() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:129:2: ( ( ( rule__ProcedureDef__Group__0 ) ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:130:1: ( ( rule__ProcedureDef__Group__0 ) )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:130:1: ( ( rule__ProcedureDef__Group__0 ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:131:1: ( rule__ProcedureDef__Group__0 )
            {
             before(grammarAccess.getProcedureDefAccess().getGroup()); 
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:132:1: ( rule__ProcedureDef__Group__0 )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:132:2: rule__ProcedureDef__Group__0
            {
            pushFollow(FOLLOW_rule__ProcedureDef__Group__0_in_ruleProcedureDef214);
            rule__ProcedureDef__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getProcedureDefAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleProcedureDef"


    // $ANTLR start "entryRuleCommands"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:144:1: entryRuleCommands : ruleCommands EOF ;
    public final void entryRuleCommands() throws RecognitionException {
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:145:1: ( ruleCommands EOF )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:146:1: ruleCommands EOF
            {
             before(grammarAccess.getCommandsRule()); 
            pushFollow(FOLLOW_ruleCommands_in_entryRuleCommands241);
            ruleCommands();

            state._fsp--;

             after(grammarAccess.getCommandsRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleCommands248); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleCommands"


    // $ANTLR start "ruleCommands"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:153:1: ruleCommands : ( ( rule__Commands__Alternatives ) ) ;
    public final void ruleCommands() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:157:2: ( ( ( rule__Commands__Alternatives ) ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:158:1: ( ( rule__Commands__Alternatives ) )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:158:1: ( ( rule__Commands__Alternatives ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:159:1: ( rule__Commands__Alternatives )
            {
             before(grammarAccess.getCommandsAccess().getAlternatives()); 
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:160:1: ( rule__Commands__Alternatives )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:160:2: rule__Commands__Alternatives
            {
            pushFollow(FOLLOW_rule__Commands__Alternatives_in_ruleCommands274);
            rule__Commands__Alternatives();

            state._fsp--;


            }

             after(grammarAccess.getCommandsAccess().getAlternatives()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleCommands"


    // $ANTLR start "entryRulePut"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:172:1: entryRulePut : rulePut EOF ;
    public final void entryRulePut() throws RecognitionException {
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:173:1: ( rulePut EOF )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:174:1: rulePut EOF
            {
             before(grammarAccess.getPutRule()); 
            pushFollow(FOLLOW_rulePut_in_entryRulePut301);
            rulePut();

            state._fsp--;

             after(grammarAccess.getPutRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRulePut308); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRulePut"


    // $ANTLR start "rulePut"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:181:1: rulePut : ( ( rule__Put__Group__0 ) ) ;
    public final void rulePut() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:185:2: ( ( ( rule__Put__Group__0 ) ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:186:1: ( ( rule__Put__Group__0 ) )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:186:1: ( ( rule__Put__Group__0 ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:187:1: ( rule__Put__Group__0 )
            {
             before(grammarAccess.getPutAccess().getGroup()); 
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:188:1: ( rule__Put__Group__0 )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:188:2: rule__Put__Group__0
            {
            pushFollow(FOLLOW_rule__Put__Group__0_in_rulePut334);
            rule__Put__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getPutAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rulePut"


    // $ANTLR start "entryRuleMove"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:200:1: entryRuleMove : ruleMove EOF ;
    public final void entryRuleMove() throws RecognitionException {
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:201:1: ( ruleMove EOF )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:202:1: ruleMove EOF
            {
             before(grammarAccess.getMoveRule()); 
            pushFollow(FOLLOW_ruleMove_in_entryRuleMove361);
            ruleMove();

            state._fsp--;

             after(grammarAccess.getMoveRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleMove368); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleMove"


    // $ANTLR start "ruleMove"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:209:1: ruleMove : ( ( rule__Move__Group__0 ) ) ;
    public final void ruleMove() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:213:2: ( ( ( rule__Move__Group__0 ) ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:214:1: ( ( rule__Move__Group__0 ) )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:214:1: ( ( rule__Move__Group__0 ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:215:1: ( rule__Move__Group__0 )
            {
             before(grammarAccess.getMoveAccess().getGroup()); 
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:216:1: ( rule__Move__Group__0 )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:216:2: rule__Move__Group__0
            {
            pushFollow(FOLLOW_rule__Move__Group__0_in_ruleMove394);
            rule__Move__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getMoveAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleMove"


    // $ANTLR start "entryRuleTypeMovement"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:228:1: entryRuleTypeMovement : ruleTypeMovement EOF ;
    public final void entryRuleTypeMovement() throws RecognitionException {
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:229:1: ( ruleTypeMovement EOF )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:230:1: ruleTypeMovement EOF
            {
             before(grammarAccess.getTypeMovementRule()); 
            pushFollow(FOLLOW_ruleTypeMovement_in_entryRuleTypeMovement421);
            ruleTypeMovement();

            state._fsp--;

             after(grammarAccess.getTypeMovementRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleTypeMovement428); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleTypeMovement"


    // $ANTLR start "ruleTypeMovement"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:237:1: ruleTypeMovement : ( ( rule__TypeMovement__Alternatives ) ) ;
    public final void ruleTypeMovement() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:241:2: ( ( ( rule__TypeMovement__Alternatives ) ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:242:1: ( ( rule__TypeMovement__Alternatives ) )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:242:1: ( ( rule__TypeMovement__Alternatives ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:243:1: ( rule__TypeMovement__Alternatives )
            {
             before(grammarAccess.getTypeMovementAccess().getAlternatives()); 
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:244:1: ( rule__TypeMovement__Alternatives )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:244:2: rule__TypeMovement__Alternatives
            {
            pushFollow(FOLLOW_rule__TypeMovement__Alternatives_in_ruleTypeMovement454);
            rule__TypeMovement__Alternatives();

            state._fsp--;


            }

             after(grammarAccess.getTypeMovementAccess().getAlternatives()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleTypeMovement"


    // $ANTLR start "entryRuleWest"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:256:1: entryRuleWest : ruleWest EOF ;
    public final void entryRuleWest() throws RecognitionException {
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:257:1: ( ruleWest EOF )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:258:1: ruleWest EOF
            {
             before(grammarAccess.getWestRule()); 
            pushFollow(FOLLOW_ruleWest_in_entryRuleWest481);
            ruleWest();

            state._fsp--;

             after(grammarAccess.getWestRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleWest488); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleWest"


    // $ANTLR start "ruleWest"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:265:1: ruleWest : ( ( rule__West__NameAssignment ) ) ;
    public final void ruleWest() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:269:2: ( ( ( rule__West__NameAssignment ) ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:270:1: ( ( rule__West__NameAssignment ) )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:270:1: ( ( rule__West__NameAssignment ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:271:1: ( rule__West__NameAssignment )
            {
             before(grammarAccess.getWestAccess().getNameAssignment()); 
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:272:1: ( rule__West__NameAssignment )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:272:2: rule__West__NameAssignment
            {
            pushFollow(FOLLOW_rule__West__NameAssignment_in_ruleWest514);
            rule__West__NameAssignment();

            state._fsp--;


            }

             after(grammarAccess.getWestAccess().getNameAssignment()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleWest"


    // $ANTLR start "entryRuleEast"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:284:1: entryRuleEast : ruleEast EOF ;
    public final void entryRuleEast() throws RecognitionException {
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:285:1: ( ruleEast EOF )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:286:1: ruleEast EOF
            {
             before(grammarAccess.getEastRule()); 
            pushFollow(FOLLOW_ruleEast_in_entryRuleEast541);
            ruleEast();

            state._fsp--;

             after(grammarAccess.getEastRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleEast548); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleEast"


    // $ANTLR start "ruleEast"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:293:1: ruleEast : ( ( rule__East__NameAssignment ) ) ;
    public final void ruleEast() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:297:2: ( ( ( rule__East__NameAssignment ) ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:298:1: ( ( rule__East__NameAssignment ) )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:298:1: ( ( rule__East__NameAssignment ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:299:1: ( rule__East__NameAssignment )
            {
             before(grammarAccess.getEastAccess().getNameAssignment()); 
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:300:1: ( rule__East__NameAssignment )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:300:2: rule__East__NameAssignment
            {
            pushFollow(FOLLOW_rule__East__NameAssignment_in_ruleEast574);
            rule__East__NameAssignment();

            state._fsp--;


            }

             after(grammarAccess.getEastAccess().getNameAssignment()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleEast"


    // $ANTLR start "entryRuleNorth"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:312:1: entryRuleNorth : ruleNorth EOF ;
    public final void entryRuleNorth() throws RecognitionException {
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:313:1: ( ruleNorth EOF )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:314:1: ruleNorth EOF
            {
             before(grammarAccess.getNorthRule()); 
            pushFollow(FOLLOW_ruleNorth_in_entryRuleNorth601);
            ruleNorth();

            state._fsp--;

             after(grammarAccess.getNorthRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleNorth608); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleNorth"


    // $ANTLR start "ruleNorth"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:321:1: ruleNorth : ( ( rule__North__NameAssignment ) ) ;
    public final void ruleNorth() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:325:2: ( ( ( rule__North__NameAssignment ) ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:326:1: ( ( rule__North__NameAssignment ) )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:326:1: ( ( rule__North__NameAssignment ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:327:1: ( rule__North__NameAssignment )
            {
             before(grammarAccess.getNorthAccess().getNameAssignment()); 
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:328:1: ( rule__North__NameAssignment )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:328:2: rule__North__NameAssignment
            {
            pushFollow(FOLLOW_rule__North__NameAssignment_in_ruleNorth634);
            rule__North__NameAssignment();

            state._fsp--;


            }

             after(grammarAccess.getNorthAccess().getNameAssignment()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleNorth"


    // $ANTLR start "entryRuleSouth"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:340:1: entryRuleSouth : ruleSouth EOF ;
    public final void entryRuleSouth() throws RecognitionException {
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:341:1: ( ruleSouth EOF )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:342:1: ruleSouth EOF
            {
             before(grammarAccess.getSouthRule()); 
            pushFollow(FOLLOW_ruleSouth_in_entryRuleSouth661);
            ruleSouth();

            state._fsp--;

             after(grammarAccess.getSouthRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleSouth668); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleSouth"


    // $ANTLR start "ruleSouth"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:349:1: ruleSouth : ( ( rule__South__NameAssignment ) ) ;
    public final void ruleSouth() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:353:2: ( ( ( rule__South__NameAssignment ) ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:354:1: ( ( rule__South__NameAssignment ) )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:354:1: ( ( rule__South__NameAssignment ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:355:1: ( rule__South__NameAssignment )
            {
             before(grammarAccess.getSouthAccess().getNameAssignment()); 
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:356:1: ( rule__South__NameAssignment )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:356:2: rule__South__NameAssignment
            {
            pushFollow(FOLLOW_rule__South__NameAssignment_in_ruleSouth694);
            rule__South__NameAssignment();

            state._fsp--;


            }

             after(grammarAccess.getSouthAccess().getNameAssignment()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleSouth"


    // $ANTLR start "entryRuleTypeColor"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:368:1: entryRuleTypeColor : ruleTypeColor EOF ;
    public final void entryRuleTypeColor() throws RecognitionException {
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:369:1: ( ruleTypeColor EOF )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:370:1: ruleTypeColor EOF
            {
             before(grammarAccess.getTypeColorRule()); 
            pushFollow(FOLLOW_ruleTypeColor_in_entryRuleTypeColor721);
            ruleTypeColor();

            state._fsp--;

             after(grammarAccess.getTypeColorRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleTypeColor728); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleTypeColor"


    // $ANTLR start "ruleTypeColor"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:377:1: ruleTypeColor : ( ( rule__TypeColor__Alternatives ) ) ;
    public final void ruleTypeColor() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:381:2: ( ( ( rule__TypeColor__Alternatives ) ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:382:1: ( ( rule__TypeColor__Alternatives ) )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:382:1: ( ( rule__TypeColor__Alternatives ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:383:1: ( rule__TypeColor__Alternatives )
            {
             before(grammarAccess.getTypeColorAccess().getAlternatives()); 
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:384:1: ( rule__TypeColor__Alternatives )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:384:2: rule__TypeColor__Alternatives
            {
            pushFollow(FOLLOW_rule__TypeColor__Alternatives_in_ruleTypeColor754);
            rule__TypeColor__Alternatives();

            state._fsp--;


            }

             after(grammarAccess.getTypeColorAccess().getAlternatives()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleTypeColor"


    // $ANTLR start "entryRuleBlack"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:396:1: entryRuleBlack : ruleBlack EOF ;
    public final void entryRuleBlack() throws RecognitionException {
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:397:1: ( ruleBlack EOF )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:398:1: ruleBlack EOF
            {
             before(grammarAccess.getBlackRule()); 
            pushFollow(FOLLOW_ruleBlack_in_entryRuleBlack781);
            ruleBlack();

            state._fsp--;

             after(grammarAccess.getBlackRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleBlack788); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleBlack"


    // $ANTLR start "ruleBlack"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:405:1: ruleBlack : ( ( rule__Black__NameAssignment ) ) ;
    public final void ruleBlack() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:409:2: ( ( ( rule__Black__NameAssignment ) ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:410:1: ( ( rule__Black__NameAssignment ) )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:410:1: ( ( rule__Black__NameAssignment ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:411:1: ( rule__Black__NameAssignment )
            {
             before(grammarAccess.getBlackAccess().getNameAssignment()); 
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:412:1: ( rule__Black__NameAssignment )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:412:2: rule__Black__NameAssignment
            {
            pushFollow(FOLLOW_rule__Black__NameAssignment_in_ruleBlack814);
            rule__Black__NameAssignment();

            state._fsp--;


            }

             after(grammarAccess.getBlackAccess().getNameAssignment()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleBlack"


    // $ANTLR start "entryRuleRed"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:424:1: entryRuleRed : ruleRed EOF ;
    public final void entryRuleRed() throws RecognitionException {
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:425:1: ( ruleRed EOF )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:426:1: ruleRed EOF
            {
             before(grammarAccess.getRedRule()); 
            pushFollow(FOLLOW_ruleRed_in_entryRuleRed841);
            ruleRed();

            state._fsp--;

             after(grammarAccess.getRedRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRed848); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleRed"


    // $ANTLR start "ruleRed"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:433:1: ruleRed : ( ( rule__Red__NameAssignment ) ) ;
    public final void ruleRed() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:437:2: ( ( ( rule__Red__NameAssignment ) ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:438:1: ( ( rule__Red__NameAssignment ) )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:438:1: ( ( rule__Red__NameAssignment ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:439:1: ( rule__Red__NameAssignment )
            {
             before(grammarAccess.getRedAccess().getNameAssignment()); 
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:440:1: ( rule__Red__NameAssignment )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:440:2: rule__Red__NameAssignment
            {
            pushFollow(FOLLOW_rule__Red__NameAssignment_in_ruleRed874);
            rule__Red__NameAssignment();

            state._fsp--;


            }

             after(grammarAccess.getRedAccess().getNameAssignment()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleRed"


    // $ANTLR start "entryRuleBlue"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:452:1: entryRuleBlue : ruleBlue EOF ;
    public final void entryRuleBlue() throws RecognitionException {
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:453:1: ( ruleBlue EOF )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:454:1: ruleBlue EOF
            {
             before(grammarAccess.getBlueRule()); 
            pushFollow(FOLLOW_ruleBlue_in_entryRuleBlue901);
            ruleBlue();

            state._fsp--;

             after(grammarAccess.getBlueRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleBlue908); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleBlue"


    // $ANTLR start "ruleBlue"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:461:1: ruleBlue : ( ( rule__Blue__NameAssignment ) ) ;
    public final void ruleBlue() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:465:2: ( ( ( rule__Blue__NameAssignment ) ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:466:1: ( ( rule__Blue__NameAssignment ) )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:466:1: ( ( rule__Blue__NameAssignment ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:467:1: ( rule__Blue__NameAssignment )
            {
             before(grammarAccess.getBlueAccess().getNameAssignment()); 
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:468:1: ( rule__Blue__NameAssignment )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:468:2: rule__Blue__NameAssignment
            {
            pushFollow(FOLLOW_rule__Blue__NameAssignment_in_ruleBlue934);
            rule__Blue__NameAssignment();

            state._fsp--;


            }

             after(grammarAccess.getBlueAccess().getNameAssignment()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleBlue"


    // $ANTLR start "entryRuleGreen"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:480:1: entryRuleGreen : ruleGreen EOF ;
    public final void entryRuleGreen() throws RecognitionException {
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:481:1: ( ruleGreen EOF )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:482:1: ruleGreen EOF
            {
             before(grammarAccess.getGreenRule()); 
            pushFollow(FOLLOW_ruleGreen_in_entryRuleGreen961);
            ruleGreen();

            state._fsp--;

             after(grammarAccess.getGreenRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleGreen968); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleGreen"


    // $ANTLR start "ruleGreen"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:489:1: ruleGreen : ( ( rule__Green__NameAssignment ) ) ;
    public final void ruleGreen() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:493:2: ( ( ( rule__Green__NameAssignment ) ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:494:1: ( ( rule__Green__NameAssignment ) )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:494:1: ( ( rule__Green__NameAssignment ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:495:1: ( rule__Green__NameAssignment )
            {
             before(grammarAccess.getGreenAccess().getNameAssignment()); 
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:496:1: ( rule__Green__NameAssignment )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:496:2: rule__Green__NameAssignment
            {
            pushFollow(FOLLOW_rule__Green__NameAssignment_in_ruleGreen994);
            rule__Green__NameAssignment();

            state._fsp--;


            }

             after(grammarAccess.getGreenAccess().getNameAssignment()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleGreen"


    // $ANTLR start "rule__Commands__Alternatives"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:508:1: rule__Commands__Alternatives : ( ( rulePut ) | ( ruleMove ) );
    public final void rule__Commands__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:512:1: ( ( rulePut ) | ( ruleMove ) )
            int alt2=2;
            int LA2_0 = input.LA(1);

            if ( (LA2_0==16) ) {
                alt2=1;
            }
            else if ( (LA2_0==17) ) {
                alt2=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 2, 0, input);

                throw nvae;
            }
            switch (alt2) {
                case 1 :
                    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:513:1: ( rulePut )
                    {
                    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:513:1: ( rulePut )
                    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:514:1: rulePut
                    {
                     before(grammarAccess.getCommandsAccess().getPutParserRuleCall_0()); 
                    pushFollow(FOLLOW_rulePut_in_rule__Commands__Alternatives1030);
                    rulePut();

                    state._fsp--;

                     after(grammarAccess.getCommandsAccess().getPutParserRuleCall_0()); 

                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:519:6: ( ruleMove )
                    {
                    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:519:6: ( ruleMove )
                    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:520:1: ruleMove
                    {
                     before(grammarAccess.getCommandsAccess().getMoveParserRuleCall_1()); 
                    pushFollow(FOLLOW_ruleMove_in_rule__Commands__Alternatives1047);
                    ruleMove();

                    state._fsp--;

                     after(grammarAccess.getCommandsAccess().getMoveParserRuleCall_1()); 

                    }


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Commands__Alternatives"


    // $ANTLR start "rule__TypeMovement__Alternatives"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:530:1: rule__TypeMovement__Alternatives : ( ( ruleSouth ) | ( ruleNorth ) | ( ruleEast ) | ( ruleWest ) );
    public final void rule__TypeMovement__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:534:1: ( ( ruleSouth ) | ( ruleNorth ) | ( ruleEast ) | ( ruleWest ) )
            int alt3=4;
            switch ( input.LA(1) ) {
            case 21:
                {
                alt3=1;
                }
                break;
            case 20:
                {
                alt3=2;
                }
                break;
            case 19:
                {
                alt3=3;
                }
                break;
            case 18:
                {
                alt3=4;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 3, 0, input);

                throw nvae;
            }

            switch (alt3) {
                case 1 :
                    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:535:1: ( ruleSouth )
                    {
                    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:535:1: ( ruleSouth )
                    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:536:1: ruleSouth
                    {
                     before(grammarAccess.getTypeMovementAccess().getSouthParserRuleCall_0()); 
                    pushFollow(FOLLOW_ruleSouth_in_rule__TypeMovement__Alternatives1079);
                    ruleSouth();

                    state._fsp--;

                     after(grammarAccess.getTypeMovementAccess().getSouthParserRuleCall_0()); 

                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:541:6: ( ruleNorth )
                    {
                    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:541:6: ( ruleNorth )
                    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:542:1: ruleNorth
                    {
                     before(grammarAccess.getTypeMovementAccess().getNorthParserRuleCall_1()); 
                    pushFollow(FOLLOW_ruleNorth_in_rule__TypeMovement__Alternatives1096);
                    ruleNorth();

                    state._fsp--;

                     after(grammarAccess.getTypeMovementAccess().getNorthParserRuleCall_1()); 

                    }


                    }
                    break;
                case 3 :
                    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:547:6: ( ruleEast )
                    {
                    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:547:6: ( ruleEast )
                    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:548:1: ruleEast
                    {
                     before(grammarAccess.getTypeMovementAccess().getEastParserRuleCall_2()); 
                    pushFollow(FOLLOW_ruleEast_in_rule__TypeMovement__Alternatives1113);
                    ruleEast();

                    state._fsp--;

                     after(grammarAccess.getTypeMovementAccess().getEastParserRuleCall_2()); 

                    }


                    }
                    break;
                case 4 :
                    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:553:6: ( ruleWest )
                    {
                    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:553:6: ( ruleWest )
                    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:554:1: ruleWest
                    {
                     before(grammarAccess.getTypeMovementAccess().getWestParserRuleCall_3()); 
                    pushFollow(FOLLOW_ruleWest_in_rule__TypeMovement__Alternatives1130);
                    ruleWest();

                    state._fsp--;

                     after(grammarAccess.getTypeMovementAccess().getWestParserRuleCall_3()); 

                    }


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeMovement__Alternatives"


    // $ANTLR start "rule__TypeColor__Alternatives"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:564:1: rule__TypeColor__Alternatives : ( ( ruleGreen ) | ( ruleBlue ) | ( ruleRed ) | ( ruleBlack ) );
    public final void rule__TypeColor__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:568:1: ( ( ruleGreen ) | ( ruleBlue ) | ( ruleRed ) | ( ruleBlack ) )
            int alt4=4;
            switch ( input.LA(1) ) {
            case 25:
                {
                alt4=1;
                }
                break;
            case 24:
                {
                alt4=2;
                }
                break;
            case 23:
                {
                alt4=3;
                }
                break;
            case 22:
                {
                alt4=4;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 4, 0, input);

                throw nvae;
            }

            switch (alt4) {
                case 1 :
                    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:569:1: ( ruleGreen )
                    {
                    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:569:1: ( ruleGreen )
                    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:570:1: ruleGreen
                    {
                     before(grammarAccess.getTypeColorAccess().getGreenParserRuleCall_0()); 
                    pushFollow(FOLLOW_ruleGreen_in_rule__TypeColor__Alternatives1162);
                    ruleGreen();

                    state._fsp--;

                     after(grammarAccess.getTypeColorAccess().getGreenParserRuleCall_0()); 

                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:575:6: ( ruleBlue )
                    {
                    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:575:6: ( ruleBlue )
                    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:576:1: ruleBlue
                    {
                     before(grammarAccess.getTypeColorAccess().getBlueParserRuleCall_1()); 
                    pushFollow(FOLLOW_ruleBlue_in_rule__TypeColor__Alternatives1179);
                    ruleBlue();

                    state._fsp--;

                     after(grammarAccess.getTypeColorAccess().getBlueParserRuleCall_1()); 

                    }


                    }
                    break;
                case 3 :
                    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:581:6: ( ruleRed )
                    {
                    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:581:6: ( ruleRed )
                    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:582:1: ruleRed
                    {
                     before(grammarAccess.getTypeColorAccess().getRedParserRuleCall_2()); 
                    pushFollow(FOLLOW_ruleRed_in_rule__TypeColor__Alternatives1196);
                    ruleRed();

                    state._fsp--;

                     after(grammarAccess.getTypeColorAccess().getRedParserRuleCall_2()); 

                    }


                    }
                    break;
                case 4 :
                    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:587:6: ( ruleBlack )
                    {
                    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:587:6: ( ruleBlack )
                    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:588:1: ruleBlack
                    {
                     before(grammarAccess.getTypeColorAccess().getBlackParserRuleCall_3()); 
                    pushFollow(FOLLOW_ruleBlack_in_rule__TypeColor__Alternatives1213);
                    ruleBlack();

                    state._fsp--;

                     after(grammarAccess.getTypeColorAccess().getBlackParserRuleCall_3()); 

                    }


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeColor__Alternatives"


    // $ANTLR start "rule__ProcedureDef__Group__0"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:600:1: rule__ProcedureDef__Group__0 : rule__ProcedureDef__Group__0__Impl rule__ProcedureDef__Group__1 ;
    public final void rule__ProcedureDef__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:604:1: ( rule__ProcedureDef__Group__0__Impl rule__ProcedureDef__Group__1 )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:605:2: rule__ProcedureDef__Group__0__Impl rule__ProcedureDef__Group__1
            {
            pushFollow(FOLLOW_rule__ProcedureDef__Group__0__Impl_in_rule__ProcedureDef__Group__01243);
            rule__ProcedureDef__Group__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__ProcedureDef__Group__1_in_rule__ProcedureDef__Group__01246);
            rule__ProcedureDef__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcedureDef__Group__0"


    // $ANTLR start "rule__ProcedureDef__Group__0__Impl"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:612:1: rule__ProcedureDef__Group__0__Impl : ( 'procedure' ) ;
    public final void rule__ProcedureDef__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:616:1: ( ( 'procedure' ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:617:1: ( 'procedure' )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:617:1: ( 'procedure' )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:618:1: 'procedure'
            {
             before(grammarAccess.getProcedureDefAccess().getProcedureKeyword_0()); 
            match(input,11,FOLLOW_11_in_rule__ProcedureDef__Group__0__Impl1274); 
             after(grammarAccess.getProcedureDefAccess().getProcedureKeyword_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcedureDef__Group__0__Impl"


    // $ANTLR start "rule__ProcedureDef__Group__1"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:631:1: rule__ProcedureDef__Group__1 : rule__ProcedureDef__Group__1__Impl rule__ProcedureDef__Group__2 ;
    public final void rule__ProcedureDef__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:635:1: ( rule__ProcedureDef__Group__1__Impl rule__ProcedureDef__Group__2 )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:636:2: rule__ProcedureDef__Group__1__Impl rule__ProcedureDef__Group__2
            {
            pushFollow(FOLLOW_rule__ProcedureDef__Group__1__Impl_in_rule__ProcedureDef__Group__11305);
            rule__ProcedureDef__Group__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__ProcedureDef__Group__2_in_rule__ProcedureDef__Group__11308);
            rule__ProcedureDef__Group__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcedureDef__Group__1"


    // $ANTLR start "rule__ProcedureDef__Group__1__Impl"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:643:1: rule__ProcedureDef__Group__1__Impl : ( ( rule__ProcedureDef__NameAssignment_1 ) ) ;
    public final void rule__ProcedureDef__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:647:1: ( ( ( rule__ProcedureDef__NameAssignment_1 ) ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:648:1: ( ( rule__ProcedureDef__NameAssignment_1 ) )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:648:1: ( ( rule__ProcedureDef__NameAssignment_1 ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:649:1: ( rule__ProcedureDef__NameAssignment_1 )
            {
             before(grammarAccess.getProcedureDefAccess().getNameAssignment_1()); 
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:650:1: ( rule__ProcedureDef__NameAssignment_1 )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:650:2: rule__ProcedureDef__NameAssignment_1
            {
            pushFollow(FOLLOW_rule__ProcedureDef__NameAssignment_1_in_rule__ProcedureDef__Group__1__Impl1335);
            rule__ProcedureDef__NameAssignment_1();

            state._fsp--;


            }

             after(grammarAccess.getProcedureDefAccess().getNameAssignment_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcedureDef__Group__1__Impl"


    // $ANTLR start "rule__ProcedureDef__Group__2"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:660:1: rule__ProcedureDef__Group__2 : rule__ProcedureDef__Group__2__Impl rule__ProcedureDef__Group__3 ;
    public final void rule__ProcedureDef__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:664:1: ( rule__ProcedureDef__Group__2__Impl rule__ProcedureDef__Group__3 )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:665:2: rule__ProcedureDef__Group__2__Impl rule__ProcedureDef__Group__3
            {
            pushFollow(FOLLOW_rule__ProcedureDef__Group__2__Impl_in_rule__ProcedureDef__Group__21365);
            rule__ProcedureDef__Group__2__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__ProcedureDef__Group__3_in_rule__ProcedureDef__Group__21368);
            rule__ProcedureDef__Group__3();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcedureDef__Group__2"


    // $ANTLR start "rule__ProcedureDef__Group__2__Impl"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:672:1: rule__ProcedureDef__Group__2__Impl : ( ( '(' )? ) ;
    public final void rule__ProcedureDef__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:676:1: ( ( ( '(' )? ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:677:1: ( ( '(' )? )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:677:1: ( ( '(' )? )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:678:1: ( '(' )?
            {
             before(grammarAccess.getProcedureDefAccess().getLeftParenthesisKeyword_2()); 
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:679:1: ( '(' )?
            int alt5=2;
            int LA5_0 = input.LA(1);

            if ( (LA5_0==12) ) {
                alt5=1;
            }
            switch (alt5) {
                case 1 :
                    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:680:2: '('
                    {
                    match(input,12,FOLLOW_12_in_rule__ProcedureDef__Group__2__Impl1397); 

                    }
                    break;

            }

             after(grammarAccess.getProcedureDefAccess().getLeftParenthesisKeyword_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcedureDef__Group__2__Impl"


    // $ANTLR start "rule__ProcedureDef__Group__3"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:691:1: rule__ProcedureDef__Group__3 : rule__ProcedureDef__Group__3__Impl rule__ProcedureDef__Group__4 ;
    public final void rule__ProcedureDef__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:695:1: ( rule__ProcedureDef__Group__3__Impl rule__ProcedureDef__Group__4 )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:696:2: rule__ProcedureDef__Group__3__Impl rule__ProcedureDef__Group__4
            {
            pushFollow(FOLLOW_rule__ProcedureDef__Group__3__Impl_in_rule__ProcedureDef__Group__31430);
            rule__ProcedureDef__Group__3__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__ProcedureDef__Group__4_in_rule__ProcedureDef__Group__31433);
            rule__ProcedureDef__Group__4();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcedureDef__Group__3"


    // $ANTLR start "rule__ProcedureDef__Group__3__Impl"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:703:1: rule__ProcedureDef__Group__3__Impl : ( ( ')' )? ) ;
    public final void rule__ProcedureDef__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:707:1: ( ( ( ')' )? ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:708:1: ( ( ')' )? )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:708:1: ( ( ')' )? )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:709:1: ( ')' )?
            {
             before(grammarAccess.getProcedureDefAccess().getRightParenthesisKeyword_3()); 
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:710:1: ( ')' )?
            int alt6=2;
            int LA6_0 = input.LA(1);

            if ( (LA6_0==13) ) {
                alt6=1;
            }
            switch (alt6) {
                case 1 :
                    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:711:2: ')'
                    {
                    match(input,13,FOLLOW_13_in_rule__ProcedureDef__Group__3__Impl1462); 

                    }
                    break;

            }

             after(grammarAccess.getProcedureDefAccess().getRightParenthesisKeyword_3()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcedureDef__Group__3__Impl"


    // $ANTLR start "rule__ProcedureDef__Group__4"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:722:1: rule__ProcedureDef__Group__4 : rule__ProcedureDef__Group__4__Impl rule__ProcedureDef__Group__5 ;
    public final void rule__ProcedureDef__Group__4() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:726:1: ( rule__ProcedureDef__Group__4__Impl rule__ProcedureDef__Group__5 )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:727:2: rule__ProcedureDef__Group__4__Impl rule__ProcedureDef__Group__5
            {
            pushFollow(FOLLOW_rule__ProcedureDef__Group__4__Impl_in_rule__ProcedureDef__Group__41495);
            rule__ProcedureDef__Group__4__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__ProcedureDef__Group__5_in_rule__ProcedureDef__Group__41498);
            rule__ProcedureDef__Group__5();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcedureDef__Group__4"


    // $ANTLR start "rule__ProcedureDef__Group__4__Impl"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:734:1: rule__ProcedureDef__Group__4__Impl : ( '{' ) ;
    public final void rule__ProcedureDef__Group__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:738:1: ( ( '{' ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:739:1: ( '{' )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:739:1: ( '{' )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:740:1: '{'
            {
             before(grammarAccess.getProcedureDefAccess().getLeftCurlyBracketKeyword_4()); 
            match(input,14,FOLLOW_14_in_rule__ProcedureDef__Group__4__Impl1526); 
             after(grammarAccess.getProcedureDefAccess().getLeftCurlyBracketKeyword_4()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcedureDef__Group__4__Impl"


    // $ANTLR start "rule__ProcedureDef__Group__5"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:753:1: rule__ProcedureDef__Group__5 : rule__ProcedureDef__Group__5__Impl rule__ProcedureDef__Group__6 ;
    public final void rule__ProcedureDef__Group__5() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:757:1: ( rule__ProcedureDef__Group__5__Impl rule__ProcedureDef__Group__6 )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:758:2: rule__ProcedureDef__Group__5__Impl rule__ProcedureDef__Group__6
            {
            pushFollow(FOLLOW_rule__ProcedureDef__Group__5__Impl_in_rule__ProcedureDef__Group__51557);
            rule__ProcedureDef__Group__5__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__ProcedureDef__Group__6_in_rule__ProcedureDef__Group__51560);
            rule__ProcedureDef__Group__6();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcedureDef__Group__5"


    // $ANTLR start "rule__ProcedureDef__Group__5__Impl"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:765:1: rule__ProcedureDef__Group__5__Impl : ( ( rule__ProcedureDef__CommandsAssignment_5 )* ) ;
    public final void rule__ProcedureDef__Group__5__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:769:1: ( ( ( rule__ProcedureDef__CommandsAssignment_5 )* ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:770:1: ( ( rule__ProcedureDef__CommandsAssignment_5 )* )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:770:1: ( ( rule__ProcedureDef__CommandsAssignment_5 )* )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:771:1: ( rule__ProcedureDef__CommandsAssignment_5 )*
            {
             before(grammarAccess.getProcedureDefAccess().getCommandsAssignment_5()); 
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:772:1: ( rule__ProcedureDef__CommandsAssignment_5 )*
            loop7:
            do {
                int alt7=2;
                int LA7_0 = input.LA(1);

                if ( ((LA7_0>=16 && LA7_0<=17)) ) {
                    alt7=1;
                }


                switch (alt7) {
            	case 1 :
            	    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:772:2: rule__ProcedureDef__CommandsAssignment_5
            	    {
            	    pushFollow(FOLLOW_rule__ProcedureDef__CommandsAssignment_5_in_rule__ProcedureDef__Group__5__Impl1587);
            	    rule__ProcedureDef__CommandsAssignment_5();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop7;
                }
            } while (true);

             after(grammarAccess.getProcedureDefAccess().getCommandsAssignment_5()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcedureDef__Group__5__Impl"


    // $ANTLR start "rule__ProcedureDef__Group__6"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:782:1: rule__ProcedureDef__Group__6 : rule__ProcedureDef__Group__6__Impl ;
    public final void rule__ProcedureDef__Group__6() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:786:1: ( rule__ProcedureDef__Group__6__Impl )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:787:2: rule__ProcedureDef__Group__6__Impl
            {
            pushFollow(FOLLOW_rule__ProcedureDef__Group__6__Impl_in_rule__ProcedureDef__Group__61618);
            rule__ProcedureDef__Group__6__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcedureDef__Group__6"


    // $ANTLR start "rule__ProcedureDef__Group__6__Impl"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:793:1: rule__ProcedureDef__Group__6__Impl : ( '}' ) ;
    public final void rule__ProcedureDef__Group__6__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:797:1: ( ( '}' ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:798:1: ( '}' )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:798:1: ( '}' )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:799:1: '}'
            {
             before(grammarAccess.getProcedureDefAccess().getRightCurlyBracketKeyword_6()); 
            match(input,15,FOLLOW_15_in_rule__ProcedureDef__Group__6__Impl1646); 
             after(grammarAccess.getProcedureDefAccess().getRightCurlyBracketKeyword_6()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcedureDef__Group__6__Impl"


    // $ANTLR start "rule__Put__Group__0"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:826:1: rule__Put__Group__0 : rule__Put__Group__0__Impl rule__Put__Group__1 ;
    public final void rule__Put__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:830:1: ( rule__Put__Group__0__Impl rule__Put__Group__1 )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:831:2: rule__Put__Group__0__Impl rule__Put__Group__1
            {
            pushFollow(FOLLOW_rule__Put__Group__0__Impl_in_rule__Put__Group__01691);
            rule__Put__Group__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Put__Group__1_in_rule__Put__Group__01694);
            rule__Put__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Put__Group__0"


    // $ANTLR start "rule__Put__Group__0__Impl"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:838:1: rule__Put__Group__0__Impl : ( ( rule__Put__NameAssignment_0 ) ) ;
    public final void rule__Put__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:842:1: ( ( ( rule__Put__NameAssignment_0 ) ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:843:1: ( ( rule__Put__NameAssignment_0 ) )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:843:1: ( ( rule__Put__NameAssignment_0 ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:844:1: ( rule__Put__NameAssignment_0 )
            {
             before(grammarAccess.getPutAccess().getNameAssignment_0()); 
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:845:1: ( rule__Put__NameAssignment_0 )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:845:2: rule__Put__NameAssignment_0
            {
            pushFollow(FOLLOW_rule__Put__NameAssignment_0_in_rule__Put__Group__0__Impl1721);
            rule__Put__NameAssignment_0();

            state._fsp--;


            }

             after(grammarAccess.getPutAccess().getNameAssignment_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Put__Group__0__Impl"


    // $ANTLR start "rule__Put__Group__1"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:855:1: rule__Put__Group__1 : rule__Put__Group__1__Impl rule__Put__Group__2 ;
    public final void rule__Put__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:859:1: ( rule__Put__Group__1__Impl rule__Put__Group__2 )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:860:2: rule__Put__Group__1__Impl rule__Put__Group__2
            {
            pushFollow(FOLLOW_rule__Put__Group__1__Impl_in_rule__Put__Group__11751);
            rule__Put__Group__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Put__Group__2_in_rule__Put__Group__11754);
            rule__Put__Group__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Put__Group__1"


    // $ANTLR start "rule__Put__Group__1__Impl"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:867:1: rule__Put__Group__1__Impl : ( '(' ) ;
    public final void rule__Put__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:871:1: ( ( '(' ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:872:1: ( '(' )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:872:1: ( '(' )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:873:1: '('
            {
             before(grammarAccess.getPutAccess().getLeftParenthesisKeyword_1()); 
            match(input,12,FOLLOW_12_in_rule__Put__Group__1__Impl1782); 
             after(grammarAccess.getPutAccess().getLeftParenthesisKeyword_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Put__Group__1__Impl"


    // $ANTLR start "rule__Put__Group__2"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:886:1: rule__Put__Group__2 : rule__Put__Group__2__Impl rule__Put__Group__3 ;
    public final void rule__Put__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:890:1: ( rule__Put__Group__2__Impl rule__Put__Group__3 )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:891:2: rule__Put__Group__2__Impl rule__Put__Group__3
            {
            pushFollow(FOLLOW_rule__Put__Group__2__Impl_in_rule__Put__Group__21813);
            rule__Put__Group__2__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Put__Group__3_in_rule__Put__Group__21816);
            rule__Put__Group__3();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Put__Group__2"


    // $ANTLR start "rule__Put__Group__2__Impl"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:898:1: rule__Put__Group__2__Impl : ( ( rule__Put__TypeAssignment_2 ) ) ;
    public final void rule__Put__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:902:1: ( ( ( rule__Put__TypeAssignment_2 ) ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:903:1: ( ( rule__Put__TypeAssignment_2 ) )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:903:1: ( ( rule__Put__TypeAssignment_2 ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:904:1: ( rule__Put__TypeAssignment_2 )
            {
             before(grammarAccess.getPutAccess().getTypeAssignment_2()); 
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:905:1: ( rule__Put__TypeAssignment_2 )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:905:2: rule__Put__TypeAssignment_2
            {
            pushFollow(FOLLOW_rule__Put__TypeAssignment_2_in_rule__Put__Group__2__Impl1843);
            rule__Put__TypeAssignment_2();

            state._fsp--;


            }

             after(grammarAccess.getPutAccess().getTypeAssignment_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Put__Group__2__Impl"


    // $ANTLR start "rule__Put__Group__3"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:915:1: rule__Put__Group__3 : rule__Put__Group__3__Impl ;
    public final void rule__Put__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:919:1: ( rule__Put__Group__3__Impl )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:920:2: rule__Put__Group__3__Impl
            {
            pushFollow(FOLLOW_rule__Put__Group__3__Impl_in_rule__Put__Group__31873);
            rule__Put__Group__3__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Put__Group__3"


    // $ANTLR start "rule__Put__Group__3__Impl"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:926:1: rule__Put__Group__3__Impl : ( ')' ) ;
    public final void rule__Put__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:930:1: ( ( ')' ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:931:1: ( ')' )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:931:1: ( ')' )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:932:1: ')'
            {
             before(grammarAccess.getPutAccess().getRightParenthesisKeyword_3()); 
            match(input,13,FOLLOW_13_in_rule__Put__Group__3__Impl1901); 
             after(grammarAccess.getPutAccess().getRightParenthesisKeyword_3()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Put__Group__3__Impl"


    // $ANTLR start "rule__Move__Group__0"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:953:1: rule__Move__Group__0 : rule__Move__Group__0__Impl rule__Move__Group__1 ;
    public final void rule__Move__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:957:1: ( rule__Move__Group__0__Impl rule__Move__Group__1 )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:958:2: rule__Move__Group__0__Impl rule__Move__Group__1
            {
            pushFollow(FOLLOW_rule__Move__Group__0__Impl_in_rule__Move__Group__01940);
            rule__Move__Group__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Move__Group__1_in_rule__Move__Group__01943);
            rule__Move__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Move__Group__0"


    // $ANTLR start "rule__Move__Group__0__Impl"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:965:1: rule__Move__Group__0__Impl : ( ( rule__Move__NameAssignment_0 ) ) ;
    public final void rule__Move__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:969:1: ( ( ( rule__Move__NameAssignment_0 ) ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:970:1: ( ( rule__Move__NameAssignment_0 ) )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:970:1: ( ( rule__Move__NameAssignment_0 ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:971:1: ( rule__Move__NameAssignment_0 )
            {
             before(grammarAccess.getMoveAccess().getNameAssignment_0()); 
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:972:1: ( rule__Move__NameAssignment_0 )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:972:2: rule__Move__NameAssignment_0
            {
            pushFollow(FOLLOW_rule__Move__NameAssignment_0_in_rule__Move__Group__0__Impl1970);
            rule__Move__NameAssignment_0();

            state._fsp--;


            }

             after(grammarAccess.getMoveAccess().getNameAssignment_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Move__Group__0__Impl"


    // $ANTLR start "rule__Move__Group__1"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:982:1: rule__Move__Group__1 : rule__Move__Group__1__Impl rule__Move__Group__2 ;
    public final void rule__Move__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:986:1: ( rule__Move__Group__1__Impl rule__Move__Group__2 )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:987:2: rule__Move__Group__1__Impl rule__Move__Group__2
            {
            pushFollow(FOLLOW_rule__Move__Group__1__Impl_in_rule__Move__Group__12000);
            rule__Move__Group__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Move__Group__2_in_rule__Move__Group__12003);
            rule__Move__Group__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Move__Group__1"


    // $ANTLR start "rule__Move__Group__1__Impl"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:994:1: rule__Move__Group__1__Impl : ( '(' ) ;
    public final void rule__Move__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:998:1: ( ( '(' ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:999:1: ( '(' )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:999:1: ( '(' )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1000:1: '('
            {
             before(grammarAccess.getMoveAccess().getLeftParenthesisKeyword_1()); 
            match(input,12,FOLLOW_12_in_rule__Move__Group__1__Impl2031); 
             after(grammarAccess.getMoveAccess().getLeftParenthesisKeyword_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Move__Group__1__Impl"


    // $ANTLR start "rule__Move__Group__2"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1013:1: rule__Move__Group__2 : rule__Move__Group__2__Impl rule__Move__Group__3 ;
    public final void rule__Move__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1017:1: ( rule__Move__Group__2__Impl rule__Move__Group__3 )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1018:2: rule__Move__Group__2__Impl rule__Move__Group__3
            {
            pushFollow(FOLLOW_rule__Move__Group__2__Impl_in_rule__Move__Group__22062);
            rule__Move__Group__2__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Move__Group__3_in_rule__Move__Group__22065);
            rule__Move__Group__3();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Move__Group__2"


    // $ANTLR start "rule__Move__Group__2__Impl"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1025:1: rule__Move__Group__2__Impl : ( ( rule__Move__TypeAssignment_2 ) ) ;
    public final void rule__Move__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1029:1: ( ( ( rule__Move__TypeAssignment_2 ) ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1030:1: ( ( rule__Move__TypeAssignment_2 ) )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1030:1: ( ( rule__Move__TypeAssignment_2 ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1031:1: ( rule__Move__TypeAssignment_2 )
            {
             before(grammarAccess.getMoveAccess().getTypeAssignment_2()); 
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1032:1: ( rule__Move__TypeAssignment_2 )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1032:2: rule__Move__TypeAssignment_2
            {
            pushFollow(FOLLOW_rule__Move__TypeAssignment_2_in_rule__Move__Group__2__Impl2092);
            rule__Move__TypeAssignment_2();

            state._fsp--;


            }

             after(grammarAccess.getMoveAccess().getTypeAssignment_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Move__Group__2__Impl"


    // $ANTLR start "rule__Move__Group__3"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1042:1: rule__Move__Group__3 : rule__Move__Group__3__Impl ;
    public final void rule__Move__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1046:1: ( rule__Move__Group__3__Impl )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1047:2: rule__Move__Group__3__Impl
            {
            pushFollow(FOLLOW_rule__Move__Group__3__Impl_in_rule__Move__Group__32122);
            rule__Move__Group__3__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Move__Group__3"


    // $ANTLR start "rule__Move__Group__3__Impl"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1053:1: rule__Move__Group__3__Impl : ( ')' ) ;
    public final void rule__Move__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1057:1: ( ( ')' ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1058:1: ( ')' )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1058:1: ( ')' )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1059:1: ')'
            {
             before(grammarAccess.getMoveAccess().getRightParenthesisKeyword_3()); 
            match(input,13,FOLLOW_13_in_rule__Move__Group__3__Impl2150); 
             after(grammarAccess.getMoveAccess().getRightParenthesisKeyword_3()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Move__Group__3__Impl"


    // $ANTLR start "rule__InitStructure__DefinitionsAssignment"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1081:1: rule__InitStructure__DefinitionsAssignment : ( ruleDefinition ) ;
    public final void rule__InitStructure__DefinitionsAssignment() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1085:1: ( ( ruleDefinition ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1086:1: ( ruleDefinition )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1086:1: ( ruleDefinition )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1087:1: ruleDefinition
            {
             before(grammarAccess.getInitStructureAccess().getDefinitionsDefinitionParserRuleCall_0()); 
            pushFollow(FOLLOW_ruleDefinition_in_rule__InitStructure__DefinitionsAssignment2194);
            ruleDefinition();

            state._fsp--;

             after(grammarAccess.getInitStructureAccess().getDefinitionsDefinitionParserRuleCall_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__InitStructure__DefinitionsAssignment"


    // $ANTLR start "rule__ProcedureDef__NameAssignment_1"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1096:1: rule__ProcedureDef__NameAssignment_1 : ( RULE_ID ) ;
    public final void rule__ProcedureDef__NameAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1100:1: ( ( RULE_ID ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1101:1: ( RULE_ID )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1101:1: ( RULE_ID )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1102:1: RULE_ID
            {
             before(grammarAccess.getProcedureDefAccess().getNameIDTerminalRuleCall_1_0()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__ProcedureDef__NameAssignment_12225); 
             after(grammarAccess.getProcedureDefAccess().getNameIDTerminalRuleCall_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcedureDef__NameAssignment_1"


    // $ANTLR start "rule__ProcedureDef__CommandsAssignment_5"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1111:1: rule__ProcedureDef__CommandsAssignment_5 : ( ruleCommands ) ;
    public final void rule__ProcedureDef__CommandsAssignment_5() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1115:1: ( ( ruleCommands ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1116:1: ( ruleCommands )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1116:1: ( ruleCommands )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1117:1: ruleCommands
            {
             before(grammarAccess.getProcedureDefAccess().getCommandsCommandsParserRuleCall_5_0()); 
            pushFollow(FOLLOW_ruleCommands_in_rule__ProcedureDef__CommandsAssignment_52256);
            ruleCommands();

            state._fsp--;

             after(grammarAccess.getProcedureDefAccess().getCommandsCommandsParserRuleCall_5_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__ProcedureDef__CommandsAssignment_5"


    // $ANTLR start "rule__Put__NameAssignment_0"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1126:1: rule__Put__NameAssignment_0 : ( ( 'Poner' ) ) ;
    public final void rule__Put__NameAssignment_0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1130:1: ( ( ( 'Poner' ) ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1131:1: ( ( 'Poner' ) )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1131:1: ( ( 'Poner' ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1132:1: ( 'Poner' )
            {
             before(grammarAccess.getPutAccess().getNamePonerKeyword_0_0()); 
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1133:1: ( 'Poner' )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1134:1: 'Poner'
            {
             before(grammarAccess.getPutAccess().getNamePonerKeyword_0_0()); 
            match(input,16,FOLLOW_16_in_rule__Put__NameAssignment_02292); 
             after(grammarAccess.getPutAccess().getNamePonerKeyword_0_0()); 

            }

             after(grammarAccess.getPutAccess().getNamePonerKeyword_0_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Put__NameAssignment_0"


    // $ANTLR start "rule__Put__TypeAssignment_2"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1149:1: rule__Put__TypeAssignment_2 : ( ruleTypeColor ) ;
    public final void rule__Put__TypeAssignment_2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1153:1: ( ( ruleTypeColor ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1154:1: ( ruleTypeColor )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1154:1: ( ruleTypeColor )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1155:1: ruleTypeColor
            {
             before(grammarAccess.getPutAccess().getTypeTypeColorParserRuleCall_2_0()); 
            pushFollow(FOLLOW_ruleTypeColor_in_rule__Put__TypeAssignment_22331);
            ruleTypeColor();

            state._fsp--;

             after(grammarAccess.getPutAccess().getTypeTypeColorParserRuleCall_2_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Put__TypeAssignment_2"


    // $ANTLR start "rule__Move__NameAssignment_0"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1164:1: rule__Move__NameAssignment_0 : ( ( 'Mover' ) ) ;
    public final void rule__Move__NameAssignment_0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1168:1: ( ( ( 'Mover' ) ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1169:1: ( ( 'Mover' ) )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1169:1: ( ( 'Mover' ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1170:1: ( 'Mover' )
            {
             before(grammarAccess.getMoveAccess().getNameMoverKeyword_0_0()); 
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1171:1: ( 'Mover' )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1172:1: 'Mover'
            {
             before(grammarAccess.getMoveAccess().getNameMoverKeyword_0_0()); 
            match(input,17,FOLLOW_17_in_rule__Move__NameAssignment_02367); 
             after(grammarAccess.getMoveAccess().getNameMoverKeyword_0_0()); 

            }

             after(grammarAccess.getMoveAccess().getNameMoverKeyword_0_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Move__NameAssignment_0"


    // $ANTLR start "rule__Move__TypeAssignment_2"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1187:1: rule__Move__TypeAssignment_2 : ( ruleTypeMovement ) ;
    public final void rule__Move__TypeAssignment_2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1191:1: ( ( ruleTypeMovement ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1192:1: ( ruleTypeMovement )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1192:1: ( ruleTypeMovement )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1193:1: ruleTypeMovement
            {
             before(grammarAccess.getMoveAccess().getTypeTypeMovementParserRuleCall_2_0()); 
            pushFollow(FOLLOW_ruleTypeMovement_in_rule__Move__TypeAssignment_22406);
            ruleTypeMovement();

            state._fsp--;

             after(grammarAccess.getMoveAccess().getTypeTypeMovementParserRuleCall_2_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Move__TypeAssignment_2"


    // $ANTLR start "rule__West__NameAssignment"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1202:1: rule__West__NameAssignment : ( ( 'Oeste' ) ) ;
    public final void rule__West__NameAssignment() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1206:1: ( ( ( 'Oeste' ) ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1207:1: ( ( 'Oeste' ) )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1207:1: ( ( 'Oeste' ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1208:1: ( 'Oeste' )
            {
             before(grammarAccess.getWestAccess().getNameOesteKeyword_0()); 
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1209:1: ( 'Oeste' )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1210:1: 'Oeste'
            {
             before(grammarAccess.getWestAccess().getNameOesteKeyword_0()); 
            match(input,18,FOLLOW_18_in_rule__West__NameAssignment2442); 
             after(grammarAccess.getWestAccess().getNameOesteKeyword_0()); 

            }

             after(grammarAccess.getWestAccess().getNameOesteKeyword_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__West__NameAssignment"


    // $ANTLR start "rule__East__NameAssignment"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1225:1: rule__East__NameAssignment : ( ( 'Este' ) ) ;
    public final void rule__East__NameAssignment() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1229:1: ( ( ( 'Este' ) ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1230:1: ( ( 'Este' ) )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1230:1: ( ( 'Este' ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1231:1: ( 'Este' )
            {
             before(grammarAccess.getEastAccess().getNameEsteKeyword_0()); 
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1232:1: ( 'Este' )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1233:1: 'Este'
            {
             before(grammarAccess.getEastAccess().getNameEsteKeyword_0()); 
            match(input,19,FOLLOW_19_in_rule__East__NameAssignment2486); 
             after(grammarAccess.getEastAccess().getNameEsteKeyword_0()); 

            }

             after(grammarAccess.getEastAccess().getNameEsteKeyword_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__East__NameAssignment"


    // $ANTLR start "rule__North__NameAssignment"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1248:1: rule__North__NameAssignment : ( ( 'Norte' ) ) ;
    public final void rule__North__NameAssignment() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1252:1: ( ( ( 'Norte' ) ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1253:1: ( ( 'Norte' ) )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1253:1: ( ( 'Norte' ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1254:1: ( 'Norte' )
            {
             before(grammarAccess.getNorthAccess().getNameNorteKeyword_0()); 
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1255:1: ( 'Norte' )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1256:1: 'Norte'
            {
             before(grammarAccess.getNorthAccess().getNameNorteKeyword_0()); 
            match(input,20,FOLLOW_20_in_rule__North__NameAssignment2530); 
             after(grammarAccess.getNorthAccess().getNameNorteKeyword_0()); 

            }

             after(grammarAccess.getNorthAccess().getNameNorteKeyword_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__North__NameAssignment"


    // $ANTLR start "rule__South__NameAssignment"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1271:1: rule__South__NameAssignment : ( ( 'Sur' ) ) ;
    public final void rule__South__NameAssignment() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1275:1: ( ( ( 'Sur' ) ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1276:1: ( ( 'Sur' ) )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1276:1: ( ( 'Sur' ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1277:1: ( 'Sur' )
            {
             before(grammarAccess.getSouthAccess().getNameSurKeyword_0()); 
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1278:1: ( 'Sur' )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1279:1: 'Sur'
            {
             before(grammarAccess.getSouthAccess().getNameSurKeyword_0()); 
            match(input,21,FOLLOW_21_in_rule__South__NameAssignment2574); 
             after(grammarAccess.getSouthAccess().getNameSurKeyword_0()); 

            }

             after(grammarAccess.getSouthAccess().getNameSurKeyword_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__South__NameAssignment"


    // $ANTLR start "rule__Black__NameAssignment"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1294:1: rule__Black__NameAssignment : ( ( 'Negro' ) ) ;
    public final void rule__Black__NameAssignment() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1298:1: ( ( ( 'Negro' ) ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1299:1: ( ( 'Negro' ) )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1299:1: ( ( 'Negro' ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1300:1: ( 'Negro' )
            {
             before(grammarAccess.getBlackAccess().getNameNegroKeyword_0()); 
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1301:1: ( 'Negro' )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1302:1: 'Negro'
            {
             before(grammarAccess.getBlackAccess().getNameNegroKeyword_0()); 
            match(input,22,FOLLOW_22_in_rule__Black__NameAssignment2618); 
             after(grammarAccess.getBlackAccess().getNameNegroKeyword_0()); 

            }

             after(grammarAccess.getBlackAccess().getNameNegroKeyword_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Black__NameAssignment"


    // $ANTLR start "rule__Red__NameAssignment"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1317:1: rule__Red__NameAssignment : ( ( 'Rojo' ) ) ;
    public final void rule__Red__NameAssignment() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1321:1: ( ( ( 'Rojo' ) ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1322:1: ( ( 'Rojo' ) )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1322:1: ( ( 'Rojo' ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1323:1: ( 'Rojo' )
            {
             before(grammarAccess.getRedAccess().getNameRojoKeyword_0()); 
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1324:1: ( 'Rojo' )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1325:1: 'Rojo'
            {
             before(grammarAccess.getRedAccess().getNameRojoKeyword_0()); 
            match(input,23,FOLLOW_23_in_rule__Red__NameAssignment2662); 
             after(grammarAccess.getRedAccess().getNameRojoKeyword_0()); 

            }

             after(grammarAccess.getRedAccess().getNameRojoKeyword_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Red__NameAssignment"


    // $ANTLR start "rule__Blue__NameAssignment"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1340:1: rule__Blue__NameAssignment : ( ( 'Azul' ) ) ;
    public final void rule__Blue__NameAssignment() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1344:1: ( ( ( 'Azul' ) ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1345:1: ( ( 'Azul' ) )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1345:1: ( ( 'Azul' ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1346:1: ( 'Azul' )
            {
             before(grammarAccess.getBlueAccess().getNameAzulKeyword_0()); 
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1347:1: ( 'Azul' )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1348:1: 'Azul'
            {
             before(grammarAccess.getBlueAccess().getNameAzulKeyword_0()); 
            match(input,24,FOLLOW_24_in_rule__Blue__NameAssignment2706); 
             after(grammarAccess.getBlueAccess().getNameAzulKeyword_0()); 

            }

             after(grammarAccess.getBlueAccess().getNameAzulKeyword_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Blue__NameAssignment"


    // $ANTLR start "rule__Green__NameAssignment"
    // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1363:1: rule__Green__NameAssignment : ( ( 'Verde' ) ) ;
    public final void rule__Green__NameAssignment() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1367:1: ( ( ( 'Verde' ) ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1368:1: ( ( 'Verde' ) )
            {
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1368:1: ( ( 'Verde' ) )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1369:1: ( 'Verde' )
            {
             before(grammarAccess.getGreenAccess().getNameVerdeKeyword_0()); 
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1370:1: ( 'Verde' )
            // ../org.xtext.tp4.minigobstones.ui/src-gen/org/xtext/tp4/ui/contentassist/antlr/internal/InternalMinigobstones.g:1371:1: 'Verde'
            {
             before(grammarAccess.getGreenAccess().getNameVerdeKeyword_0()); 
            match(input,25,FOLLOW_25_in_rule__Green__NameAssignment2750); 
             after(grammarAccess.getGreenAccess().getNameVerdeKeyword_0()); 

            }

             after(grammarAccess.getGreenAccess().getNameVerdeKeyword_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Green__NameAssignment"

    // Delegated rules


 

    public static final BitSet FOLLOW_ruleInitStructure_in_entryRuleInitStructure61 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleInitStructure68 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__InitStructure__DefinitionsAssignment_in_ruleInitStructure94 = new BitSet(new long[]{0x0000000000000802L});
    public static final BitSet FOLLOW_ruleDefinition_in_entryRuleDefinition122 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDefinition129 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleProcedureDef_in_ruleDefinition155 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleProcedureDef_in_entryRuleProcedureDef181 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleProcedureDef188 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__ProcedureDef__Group__0_in_ruleProcedureDef214 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCommands_in_entryRuleCommands241 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCommands248 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Commands__Alternatives_in_ruleCommands274 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePut_in_entryRulePut301 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePut308 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Put__Group__0_in_rulePut334 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleMove_in_entryRuleMove361 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleMove368 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Move__Group__0_in_ruleMove394 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTypeMovement_in_entryRuleTypeMovement421 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTypeMovement428 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__TypeMovement__Alternatives_in_ruleTypeMovement454 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleWest_in_entryRuleWest481 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleWest488 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__West__NameAssignment_in_ruleWest514 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEast_in_entryRuleEast541 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleEast548 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__East__NameAssignment_in_ruleEast574 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNorth_in_entryRuleNorth601 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNorth608 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__North__NameAssignment_in_ruleNorth634 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSouth_in_entryRuleSouth661 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSouth668 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__South__NameAssignment_in_ruleSouth694 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTypeColor_in_entryRuleTypeColor721 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTypeColor728 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__TypeColor__Alternatives_in_ruleTypeColor754 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBlack_in_entryRuleBlack781 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleBlack788 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Black__NameAssignment_in_ruleBlack814 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRed_in_entryRuleRed841 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRed848 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Red__NameAssignment_in_ruleRed874 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBlue_in_entryRuleBlue901 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleBlue908 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Blue__NameAssignment_in_ruleBlue934 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleGreen_in_entryRuleGreen961 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleGreen968 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Green__NameAssignment_in_ruleGreen994 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePut_in_rule__Commands__Alternatives1030 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleMove_in_rule__Commands__Alternatives1047 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSouth_in_rule__TypeMovement__Alternatives1079 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNorth_in_rule__TypeMovement__Alternatives1096 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEast_in_rule__TypeMovement__Alternatives1113 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleWest_in_rule__TypeMovement__Alternatives1130 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleGreen_in_rule__TypeColor__Alternatives1162 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBlue_in_rule__TypeColor__Alternatives1179 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRed_in_rule__TypeColor__Alternatives1196 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBlack_in_rule__TypeColor__Alternatives1213 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__ProcedureDef__Group__0__Impl_in_rule__ProcedureDef__Group__01243 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rule__ProcedureDef__Group__1_in_rule__ProcedureDef__Group__01246 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_11_in_rule__ProcedureDef__Group__0__Impl1274 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__ProcedureDef__Group__1__Impl_in_rule__ProcedureDef__Group__11305 = new BitSet(new long[]{0x0000000000007000L});
    public static final BitSet FOLLOW_rule__ProcedureDef__Group__2_in_rule__ProcedureDef__Group__11308 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__ProcedureDef__NameAssignment_1_in_rule__ProcedureDef__Group__1__Impl1335 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__ProcedureDef__Group__2__Impl_in_rule__ProcedureDef__Group__21365 = new BitSet(new long[]{0x0000000000007000L});
    public static final BitSet FOLLOW_rule__ProcedureDef__Group__3_in_rule__ProcedureDef__Group__21368 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_12_in_rule__ProcedureDef__Group__2__Impl1397 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__ProcedureDef__Group__3__Impl_in_rule__ProcedureDef__Group__31430 = new BitSet(new long[]{0x0000000000007000L});
    public static final BitSet FOLLOW_rule__ProcedureDef__Group__4_in_rule__ProcedureDef__Group__31433 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_13_in_rule__ProcedureDef__Group__3__Impl1462 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__ProcedureDef__Group__4__Impl_in_rule__ProcedureDef__Group__41495 = new BitSet(new long[]{0x0000000000038000L});
    public static final BitSet FOLLOW_rule__ProcedureDef__Group__5_in_rule__ProcedureDef__Group__41498 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_14_in_rule__ProcedureDef__Group__4__Impl1526 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__ProcedureDef__Group__5__Impl_in_rule__ProcedureDef__Group__51557 = new BitSet(new long[]{0x0000000000038000L});
    public static final BitSet FOLLOW_rule__ProcedureDef__Group__6_in_rule__ProcedureDef__Group__51560 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__ProcedureDef__CommandsAssignment_5_in_rule__ProcedureDef__Group__5__Impl1587 = new BitSet(new long[]{0x0000000000030002L});
    public static final BitSet FOLLOW_rule__ProcedureDef__Group__6__Impl_in_rule__ProcedureDef__Group__61618 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_15_in_rule__ProcedureDef__Group__6__Impl1646 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Put__Group__0__Impl_in_rule__Put__Group__01691 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_rule__Put__Group__1_in_rule__Put__Group__01694 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Put__NameAssignment_0_in_rule__Put__Group__0__Impl1721 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Put__Group__1__Impl_in_rule__Put__Group__11751 = new BitSet(new long[]{0x0000000003C00000L});
    public static final BitSet FOLLOW_rule__Put__Group__2_in_rule__Put__Group__11754 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_12_in_rule__Put__Group__1__Impl1782 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Put__Group__2__Impl_in_rule__Put__Group__21813 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_rule__Put__Group__3_in_rule__Put__Group__21816 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Put__TypeAssignment_2_in_rule__Put__Group__2__Impl1843 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Put__Group__3__Impl_in_rule__Put__Group__31873 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_13_in_rule__Put__Group__3__Impl1901 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Move__Group__0__Impl_in_rule__Move__Group__01940 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_rule__Move__Group__1_in_rule__Move__Group__01943 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Move__NameAssignment_0_in_rule__Move__Group__0__Impl1970 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Move__Group__1__Impl_in_rule__Move__Group__12000 = new BitSet(new long[]{0x00000000003C0000L});
    public static final BitSet FOLLOW_rule__Move__Group__2_in_rule__Move__Group__12003 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_12_in_rule__Move__Group__1__Impl2031 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Move__Group__2__Impl_in_rule__Move__Group__22062 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_rule__Move__Group__3_in_rule__Move__Group__22065 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Move__TypeAssignment_2_in_rule__Move__Group__2__Impl2092 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Move__Group__3__Impl_in_rule__Move__Group__32122 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_13_in_rule__Move__Group__3__Impl2150 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDefinition_in_rule__InitStructure__DefinitionsAssignment2194 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__ProcedureDef__NameAssignment_12225 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCommands_in_rule__ProcedureDef__CommandsAssignment_52256 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_16_in_rule__Put__NameAssignment_02292 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTypeColor_in_rule__Put__TypeAssignment_22331 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_17_in_rule__Move__NameAssignment_02367 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTypeMovement_in_rule__Move__TypeAssignment_22406 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_18_in_rule__West__NameAssignment2442 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_19_in_rule__East__NameAssignment2486 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_20_in_rule__North__NameAssignment2530 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_21_in_rule__South__NameAssignment2574 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_22_in_rule__Black__NameAssignment2618 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_23_in_rule__Red__NameAssignment2662 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_24_in_rule__Blue__NameAssignment2706 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_25_in_rule__Green__NameAssignment2750 = new BitSet(new long[]{0x0000000000000002L});

}